package com.fdd.op.sdk.request.api.contract.manual;

import com.fdd.op.sdk.ApiRuleException;
import com.fdd.op.sdk.BaseFddRequest;
import com.fdd.op.sdk.constants.Constants;
import com.fdd.op.sdk.internal.mapping.RequestField;
import com.fdd.op.sdk.model.dto.DocSignInfoDTO;
import com.fdd.op.sdk.response.api.contract.manual.SignResponse;

import java.util.List;
import java.util.Map;

public class SignRequest extends BaseFddRequest<SignResponse> {
    @Override
    public String getApiMethodName() {
        return "/base/api/contract/manual/sign";
    }

    @Override
    public Map<String, Object> getTextParams() {
        return null;
    }

    @Override
    public Class<SignResponse> getResponseClass() {
        return SignResponse.class;
    }

    @Override
    public void check() throws ApiRuleException {

    }

    @Override
    public String getHttpMethod() {
        return Constants.METHOD_POST;
    }

    @RequestField
    private String docId;

    @RequestField
    private  String tpDocId;

    @RequestField
    private Integer isAutoArchive;

    @RequestField
    private Integer isSendNotify;

    @RequestField
    private String returnUrl;

    @RequestField
    private Integer urlTimeOut;

    @RequestField
    private Integer accessType;

    @RequestField
    private String accessCode;

    @RequestField
    private Integer clientPageType;

    @RequestField
    private String signerAccountId;

    @RequestField
    private String tpSignerAccountId;

    @RequestField
    private String signerName;

    @RequestField
    private String mobile;

    @RequestField
    private String areaCode;

    @RequestField
    private String email;

    @RequestField
    private String companyId;

    @RequestField(value = "发起方企业名称")
    private String companyName;

    @RequestField(value = "文档所属企业在第三方业务系统的唯一标识，文档所属企业在当前系统的唯一标识、在第三方业务系统的唯一标识不允许同时传入，只允许传一个")
    private String tpOrgId;

    @RequestField(value = "是否指定签署位置,0：否（默认）；1：是")
    private Integer isPosition = 0;

    @RequestField
    private String verifyMode = "0";

    @RequestField(value = "代表企业签署时，签署要求：1：企业盖章（默认）；2：企业盖章+个人签名")
    private Integer signDemand = 1;

    @RequestField
    private Integer isAllowReject;

    @RequestField
    private String notifyNo;

    @RequestField(value = "文件签署信息列表")
    private List<DocSignInfoDTO> docSignInfoDTO;

    @RequestField
    private Integer personSealType;

    public String getDocId() {
        return docId;
    }

    public void setDocId(String docId) {
        this.docId = docId;
    }

    public String getTpDocId() {
        return tpDocId;
    }

    public void setTpDocId(String tpDocId) {
        this.tpDocId = tpDocId;
    }

    public Integer getIsAutoArchive() {
        return isAutoArchive;
    }

    public void setIsAutoArchive(Integer isAutoArchive) {
        this.isAutoArchive = isAutoArchive;
    }

    public Integer getIsSendNotify() {
        return isSendNotify;
    }

    public void setIsSendNotify(Integer isSendNotify) {
        this.isSendNotify = isSendNotify;
    }

    public String getReturnUrl() {
        return returnUrl;
    }

    public void setReturnUrl(String returnUrl) {
        this.returnUrl = returnUrl;
    }

    public Integer getUrlTimeOut() {
        return urlTimeOut;
    }

    public void setUrlTimeOut(Integer urlTimeOut) {
        this.urlTimeOut = urlTimeOut;
    }

    public Integer getAccessType() {
        return accessType;
    }

    public void setAccessType(Integer accessType) {
        this.accessType = accessType;
    }

    public String getAccessCode() {
        return accessCode;
    }

    public void setAccessCode(String accessCode) {
        this.accessCode = accessCode;
    }

    public Integer getClientPageType() {
        return clientPageType;
    }

    public void setClientPageType(Integer clientPageType) {
        this.clientPageType = clientPageType;
    }

    public String getSignerAccountId() {
        return signerAccountId;
    }

    public void setSignerAccountId(String signerAccountId) {
        this.signerAccountId = signerAccountId;
    }

    public String getTpSignerAccountId() {
        return tpSignerAccountId;
    }

    public void setTpSignerAccountId(String tpSignerAccountId) {
        this.tpSignerAccountId = tpSignerAccountId;
    }

    public String getSignerName() {
        return signerName;
    }

    public void setSignerName(String signerName) {
        this.signerName = signerName;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getAreaCode() {
        return areaCode;
    }

    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getCompanyId() {
        return companyId;
    }

    public void setCompanyId(String companyId) {
        this.companyId = companyId;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getTpOrgId() {
        return tpOrgId;
    }

    public void setTpOrgId(String tpOrgId) {
        this.tpOrgId = tpOrgId;
    }

    public Integer getIsPosition() {
        return isPosition;
    }

    public void setIsPosition(Integer isPosition) {
        this.isPosition = isPosition;
    }

    public String getVerifyMode() {
        return verifyMode;
    }

    public void setVerifyMode(String verifyMode) {
        this.verifyMode = verifyMode;
    }

    public Integer getSignDemand() {
        return signDemand;
    }

    public void setSignDemand(Integer signDemand) {
        this.signDemand = signDemand;
    }

    public Integer getIsAllowReject() {
        return isAllowReject;
    }

    public void setIsAllowReject(Integer isAllowReject) {
        this.isAllowReject = isAllowReject;
    }

    public String getNotifyNo() {
        return notifyNo;
    }

    public void setNotifyNo(String notifyNo) {
        this.notifyNo = notifyNo;
    }

    public List<DocSignInfoDTO> getDocSignInfoDTO() {
        return docSignInfoDTO;
    }

    public void setDocSignInfoDTO(List<DocSignInfoDTO> docSignInfoDTO) {
        this.docSignInfoDTO = docSignInfoDTO;
    }

    public Integer getPersonSealType() {
        return personSealType;
    }

    public void setPersonSealType(Integer personSealType) {
        this.personSealType = personSealType;
    }
}
